home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
IRIX 6.2 Development Libraries
/
SGI IRIX 6.2 Development Libraries.iso
/
dist
/
complib.idb
/
usr
/
share
/
catman
/
p_man
/
cat3
/
complib
/
DQRSL.z
/
DQRSL
Wrap
Text File
|
1996-03-14
|
6KB
|
199 lines
DDDDQQQQRRRRSSSSLLLL((((3333FFFF)))) DDDDQQQQRRRRSSSSLLLL((((3333FFFF))))
NNNNAAAAMMMMEEEE
DQRSL - DQRSL applies the output of DQRDC to compute coordinate
transformations, projections, and least squares solutions. For K .LE.
MIN(N,P), let XK be the matrix
XK = (X(JPVT(1)),X(JPVT(2)), ... ,X(JPVT(K)))
formed from columnns JPVT(1), ... ,JPVT(K) of the original N X P matrix X
that was input to DQRDC (if no pivoting was done, XK consists of the
first K columns of X in their original order). DQRDC produces a factored
orthogonal matrix Q and an upper triangular matrix R such that
XK = Q * (R)
(0)
This information is contained in coded form in the arrays X and QRAUX.
SSSSYYYYNNNNOOOOPPPPSSSSYYYYSSSS
SUBROUTINE DQRSL(X,LDX,N,K,QRAUX,Y,QY,QTY,B,RSD,XB,JOB,INFO)
DDDDEEEESSSSCCCCRRRRIIIIPPPPTTTTIIIIOOOONNNN
On Entry
XXXX DOUBLE PRECISION(LDX,P).
X contains the output of DQRDC.
LLLLDDDDXXXX INTEGER.
LDX is the leading dimension of the array X.
NNNN INTEGER.
N is the number of rows of the matrix XK. It must
have the same value as N in DQRDC.
KKKK INTEGER.
K is the number of columns of the matrix XK. K
must not be greater than MIN(N,P), where P is the
same as in the calling sequence to DQRDC.
QQQQRRRRAAAAUUUUXXXX DOUBLE PRECISION(P).
QRAUX contains the auxiliary output from DQRDC.
YYYY DOUBLE PRECISION(N)
Y contains an N-vector that is to be manipulated
by DQRSL.
JJJJOOOOBBBB INTEGER.
JOB specifies what is to be computed. JOB has
the decimal expansion ABCDE, with the following
meaning.
If A .NE. 0, compute QY.
If B,C,D, or E .NE. 0, compute QTY.
PPPPaaaaggggeeee 1111
DDDDQQQQRRRRSSSSLLLL((((3333FFFF)))) DDDDQQQQRRRRSSSSLLLL((((3333FFFF))))
If C .NE. 0, compute B.
If D .NE. 0, compute RSD.
If E .NE. 0, compute XB.
Note that a request to compute B, RSD, or XB
automatically triggers the computation of QTY, for
which an array must be provided in the calling
sequence. On Return
QQQQYYYY DOUBLE PRECISION(N).
QY contains Q*Y, if its computation has been
requested.
QQQQTTTTYYYY DOUBLE PRECISION(N).
QTY contains TRANS(Q)*Y, if its computation has
been requested. Here TRANS(Q) is the
transpose of the matrix Q.
BBBB DOUBLE PRECISION(K)
B contains the solution of the least squares problem
minimize norm2(Y - XK*B),
if its computation has been requested. (Note that
if pivoting was requested in DQRDC, the J-th
component of B will be associated with column JPVT(J)
of the original matrix X that was input into DQRDC.)
RRRRSSSSDDDD DOUBLE PRECISION(N).
RSD contains the least squares residual Y - XK*B,
if its computation has been requested. RSD is
also the orthogonal projection of Y onto the
orthogonal complement of the column space of XK.
XXXXBBBB DOUBLE PRECISION(N).
XB contains the least squares approximation XK*B,
if its computation has been requested. XB is also
the orthogonal projection of Y onto the column space
of X.
IIIINNNNFFFFOOOO INTEGER.
INFO is zero unless the computation of B has
been requested and R is exactly singular. In
this case, INFO is the index of the first zero
diagonal element of R and B is left unaltered. The parameters QY,
QTY, B, RSD, and XB are not referenced if their computation is not
requested and in this case can be replaced by dummy variables in the
calling program. To save storage, the user may in some cases use the
same array for different parameters in the calling sequence. A
frequently occuring example is when one wishes to compute any of B, RSD,
or XB and does not need Y or QTY. In this case one may identify Y, QTY,
and one of B, RSD, or XB, while providing separate arrays for anything
else that is to be computed. Thus the calling sequence CALL
DQRSL(X,LDX,N,K,QRAUX,Y,DUM,Y,B,Y,DUM,110,INFO) will result in the
computation of B and RSD, with RSD overwriting Y. More generally, each
PPPPaaaaggggeeee 2222
DDDDQQQQRRRRSSSSLLLL((((3333FFFF)))) DDDDQQQQRRRRSSSSLLLL((((3333FFFF))))
item in the following list contains groups of permissible identifications
for a single calling sequence. 1. (Y,QTY,B) (RSD) (XB) (QY) 2.
(Y,QTY,RSD) (B) (XB) (QY) 3. (Y,QTY,XB) (B) (RSD) (QY) 4. (Y,QY) (QTY,B)
(RSD) (XB) 5. (Y,QY) (QTY,RSD) (B) (XB) 6. (Y,QY) (QTY,XB) (B) (RSD) In
any group the value returned in the array allocated to the group
corresponds to the last member of the group. LINPACK. This version
dated 08/14/78 . G. W. Stewart, University of Maryland, Argonne National
Lab.
DDDDQQQQRRRRSSSSLLLL uses the following functions and subprograms. BLAS DAXPY,DCOPY,DDOT
Fortran DABS,MIN0,MOD
PPPPaaaaggggeeee 3333